import {
	storageLocaleKey,
	localeTypes,
	defaultLocaleType,
	localeLangs
} from './index.d';
import i18n from './index';

/**
 * 使用i18n对象
 */
export function useI18n() {
	// js对象转json数据:  JSON.stringify();
	// json数据转js对象:  JSON.parse();

	const vueI18n = i18n;
	// console.log('useI18n', vueI18n);
	return {
		t: function(key) {
			return vueI18n.tc(key);
		}
	};
};

/**
 * 获取本地化语言
 */
export function getLocalelang() {
	// let currentLocalelang = uni.getStorageSync(storageLocaleKey);
	let currentLocalelang = uni.getLocale();
	// console.log(currentLocalelang);
	if (currentLocalelang === undefined | currentLocalelang === null | currentLocalelang === '') {
		// 设置默认语言
		currentLocalelang = defaultLocaleType;
		setLocalelang(currentLocalelang);
	}
	return currentLocalelang;
};

/**
 * 设置本地化语言
 * @param {String} localelang - 本地化语言：'en' | 'ja' | 'zh-Hans' | 'zh-Hant'
 */
export function setLocalelang(localelang) {
	// console.log('setLocalelang', localelang);
	if (!localeTypes.includes(localelang)) {
		uni.showToast({
			icon: 'error',
			title: '语言类型必须为：en | ja | zh-Hans | zh-Hant'
		});
		return;
	}
	//在axios请求头设置语言字段，这个原因是，服务器可以根据不同的语言返回不同的数据
	//因为国际化不仅需要国际化固定的字段，还有很多数据需要国际化。
	// ajax.defaults.header.common['Accept-Language'] = localelang;
	// uni.setStorageSync(storageLocaleKey, localelang);
	uni.setLocale(localelang);
};

/**
 * 获取本地化语言描述
 */
export function getLocalelangDesc(localelang) {
	for (let i = 0; i < localeLangs.length; i++) {
		const localeLang = localeLangs[i];
		if (localeLang && localeLang.value === localelang) {
			return localeLang.text;
		}
	}
	return '';
};

/**
 * 获取请求语言
 */
export function getRequestlang(localelang) {
	for (let i = 0; i < localeLangs.length; i++) {
		const localeLang = localeLangs[i];
		// console.log('getRequestlang', localeLang);
		if (localeLang && localeLang.value === localelang) {
			// console.log('getRequestlang', localeLang.request);
			return localeLang.request;
		}
	}
	return '';
};

/**
 * 获取当前的请求语言
 */
export function getCurrentRequestlang() {
	const currentLocalelang = getLocalelang();
	const currentRequestlang = getRequestlang(currentLocalelang);
	return currentRequestlang;
};
